package com.app.miwawa.api.eam.service.aop;

import javax.annotation.Resource;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.framework.common.api.entity.CommonEntityAware;
import org.framework.common.api.service.dao.CommonDaoAware;
import org.framework.common.ext.util.JsonUtil;
import org.framework.common.ext.util.StringUtil;
import org.springframework.stereotype.Component;

import com.app.miwawa.api.eam.entity.StudentCheck;

/**
 * 操作学员时的AOP拦截器
 * <p>描述: </p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date 2016年5月4日 下午5:00:38
 * @version 1.0.2016
 */
@Aspect
@Component
public class StudentAspect {

	@Resource(name = "defaultDao")
	private CommonDaoAware<CommonEntityAware<String>, String> dao;
	
	/**
	 * 拦截学员签到的方法，签到异常时回滚签到记录.
	 * @param point
	 * @param check
	 * @throws Exception
	 * @author chanlong(陈龙)
	 * @date 2016年5月4日 下午7:21:00
	 */
	@AfterThrowing(value = "execution(* com.app.miwawa.api.eam.service.bo.StudentBo.check(..)) && args(check)")
	public void throwsCheck(JoinPoint point, StudentCheck check) throws Exception{
		System.out.println("学员签到异常时的回调，回调：" + JsonUtil.serialize(check));
		
		if(StringUtil.isNotEmpty(check.getId())){
			dao.remove(check);
		}
	}
	
}
